// utils/crypto.js
const bcrypt = require('bcrypt');
const saltRounds = 12; // 推荐值：10-12（平衡安全与性能）
/*

await 用于在调用异步任务函数前，表示需要等待异步任务执行完毕才执行后续的任务
是取代异步回调函数的一种以同步书写异步任务的语法糖

函数内部中一旦使用了await，该函数声明是必须用async进行修饰，
且在function关键字之前
*/
module.exports = {
  hashPassword: async (plainText) => {
    return await bcrypt.hash(plainText, saltRounds);
  },
  comparePassword: async (plainText, hash) => {
    return await bcrypt.compare(plainText, hash);
  }
};
